/*
  星木节
  题目描述
    在一个遥远的星球上，有一种稀有的植物叫做 “星木”，它的木材质地坚硬且均匀，非常适合用来制作工艺品。
    星木的木材在星球上受到严格的保护，只有在特定的节日里，居民们才能从政府那里获得有限的星木原木。
    星木节即将到来，居民们希望能够将这些珍贵的星木原木切割成等长的小段，用于制作统一规格的装饰品。
    由于星木的稀有性，居民们希望能够最大限度地利用每一根原木，
    即切割出尽可能长的木段，同时满足所有装饰品统一规格的要求。

    居民们现在需要确定切割星木原木的最大可能长度，以确保每一段都能保持星木的完整性和美观。
    星木原木的数量是 n，他们希望能够制作出 k 段相同长度的装饰品。
  输入格式
    第 1 行：两个正整数 n 和 k，分别表示星木原木的数量和希望制作的装饰品段数。
    接下来 n 行，每行一个正整数 Li，表示一根星木原木的长度。
  输出格式
    仅 1 行：一个整数，表示切割得到的每段星木的最大长度。
  输入数据 1
    3 7
    232
    124
    456
  输出数据 1
    114
  提示
    如果连 1cm 长的小段都切不出来，输出 0。
    对于 100% 的数据，有 1 ≤ 𝑛 ≤ 10^5，1 ≤ 𝑘 ≤ 10^8，1 ≤ 𝐿𝑖 ≤ 10^8 (𝑖 ∈ [1, 𝑛])。
*/

#include <bits/stdc++.h>

using namespace std;

/*
  思路:
    通常采用二分答案算法的话, 需要首先明确 2 个核心问题:
      1) 答案的取值范围(区间)，即确定区间的最大值和最小值
      2) 判断某个答案是否满足题意(条件)的判定方法
    解答本题时，先明确出这 2 个问题:
      1）答案的取值范围(区间)
          区间的最小值为 1；
          区间的最大值为 n 根星木原木中的最大长度；
      2) 判断某个答案是否满足题意的判定方法:
          首先计算出：以该答案(长度，假设为 x)进行切割，可以得到的长度为 x 的星木段的个数；
          如果得到的长度为 x 的星木段的个数大于等于 m，则该答案满足题目要求；
          否则，则该答案不满题目要求!
*/

int n, k;
int a[100005] = {}; // a[i] 表示第 i 根星木原木的长度 (其中 i > 0)
int s = 1, e = 0;   // s(start) 表示二分答案算法实现中进行二分查找时的开始边界(左边界)
                    // e(end)   表示二分答案算法实现中进行二分查找时的结束边界(右边界)

// 该函数用来判断输入 x(表示答案，即切割出的每段星木的长度) 是否满足条件(题目要求)
bool cmp(int x) {
    int sum = 0;   // 表示切割出的长度为 x 的星木段的个数

    /*
      首先计算出：以该答案(长度，假设为 x)进行切割，可以得到的长度为 x 的星木段的个数；
      如果得到的长度为 x 的星木段的个数大于等于 m，则该答案满足题目要求；
      否则，则该答案不满题目要求!
    */
    for (int i = 1; i <= n; i++) {
        sum += a[i] / x;
    }
    return sum >= k;
}

int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        if (a[i] > e) {
            e = a[i];
        }
    }

    /*
      用二分查找法，在答案的区间范围内，查找满足题目要求的最大值
    */
    int ans = 0;  // 答案, 即切割得到的每段星木的长度
    while (s <= e) {
        int mid = (s + e) / 2;
        if (cmp(mid)) {
            ans = mid;
            s = mid + 1; // 由于需要答案尽可能地大，所以我们进一步从 mid 的右半区间进行查找
        } else {
            e = mid - 1; // mid 不满足题目要求，从 mid 的左半区间进行查找
        }
    }
    cout << ans;

    return 0;
}